Computers are ubiquitous in today's society. They come in all different varieties and can be found in places such as automobiles, the grocery store, banks, personal digital assistants, cell phones, as well as in many businesses. As will be appreciated by almost anyone owning a computer, there is a trend of incorporating more and more functionality into the same amount of space. This trend may be due to many factors, such as, the miniaturization and increasing density of system components with each successive generation of computer. For example, the minimum feature size of transistors continues to decrease with successive generations of microprocessors, a phenomena which is sometimes referred to as Moore's law.
Transistors with smaller feature sizes may be capable of executing instructions faster than their predecessors. Accordingly, there is also an ever increasing need to integrate more and more memory on the same chip as the microprocessor—i.e., to “embed” memory alongside other circuitry that the memory serves. This memory is sometimes referred to as “cache” memory. While decreasing the transistor feature sizes may cause an increase in the overall amount of memory that may be implemented in the microprocessor, the smaller transistors that are used to make this memory also may be more prone to leakage currents during standby conditions than their predecessors. As a result, the overall amount of power consumed during standby for these cache memories undesirably may increase with each successive generation because the memory sizes may be larger and because the constituent transistors leak more during standby. Unfortunately, attempting to control power consumption in cache memories often produces undesirable results such as larger memories, slower memories, and/or memories that are more prone to errors because of decreased noise margins. Thus, methods and apparatuses are needed that address one or more of these problems.